package br.ucb.sigplan.util;

import javax.mail.Session;
import org.apache.commons.mail.DefaultAuthenticator;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.MultiPartEmail;

public class EmailUtil implements Runnable {

    private String mensagem = "";
    private String assunto = "";
    private String[] destinatarios = new String[0];

    public EmailUtil(String mensagem, String assunto, String... dstinatarios) {
        this.mensagem = mensagem;
        this.assunto = assunto;
        this.destinatarios = dstinatarios;
    }


    public static void sendMail(String message, String subject, String... toList){
        Thread sendMailThread = new Thread(new EmailUtil(message, subject, toList));        
        sendMailThread.start();
    }

//    public static void send(String message, String subject, String to) throws IOException, MessagingException {
//        Session session = Session.getInstance(ResourceBundleUtil.getPropriedadesProperties(), new DefaultAuthenticator(ResourceBundleUtil.getPropriedades().getString("mail.smtp.user"),
//                ResourceBundleUtil.getPropriedades().getString("mail.smtp.pass")));
//        MimeMessage msg = new MimeMessage(session);
//        
//        msg.addRecipient(Message.RecipientType.TO,new InternetAddress(to));
//        msg.setFrom(new InternetAddress(ResourceBundleUtil.getPropriedades().getString("mail.smtp.from"),
//                ResourceBundleUtil.getPropriedades().getString("mail.smtp.from.name")));
//        msg.setSubject(subject);
//        msg.setContent(message,"text/html; charset=ISO-8859-1");
//        System.out.println("Sending mail...");
//        Transport.send(msg);
//        System.out.println("Mail sent.");
//    }


    private void send(String mensagem, String assunto, String[] destinatarios) throws EmailException{
        MultiPartEmail email = new MultiPartEmail();

        if (ResourceUtil.getPropriedades().keySet().contains("mail.smtp.auth") &&
                Boolean.parseBoolean(ResourceUtil.getPropriedades().getString("mail.smtp.auth"))){
        	email.setCharset("ISO-8859-1");
        	
        	email.setMailSession(Session.getInstance(ResourceUtil.getPropriedadesProperties(),
                    new DefaultAuthenticator(ResourceUtil.getPropriedades().getString("mail.smtp.user"),
                    ResourceUtil.getPropriedades().getString("mail.smtp.pass"))));
        	
        }else{
            email.setMailSession(Session.getInstance(ResourceUtil.getPropriedadesProperties()));
        }

        if (ResourceUtil.getPropriedades().keySet().contains("mail.smtp.from.name")){
            email.setFrom(ResourceUtil.getPropriedades().getString("mail.smtp.from"),
                ResourceUtil.getPropriedades().getString("mail.smtp.from.name"));
        }
		
        for (String para : destinatarios){
            email.addTo(para);
        }

        email.setSubject(assunto);
        email.setMsg(mensagem);
        email.send();
    }

    @Override
    public void run() {
        try {
            send(mensagem, assunto, destinatarios);
        } catch (EmailException ex) {            
            ex.printStackTrace();            
        }
    }
    


}
